package cbm.commons;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

public class RequestHelper{
	
	static Logger logger = Logger.getLogger(RequestHelper.class.getName());
  
  private static RequestHelper rh = null;

  private RequestHelper() {
  }
  
  public static RequestHelper getInstance(){
    if(rh == null){
      rh = new RequestHelper();
    }
    return rh;
  }
  
  public Map getParameters(HttpServletRequest request) {
    Map<String, String> map = new HashMap<String, String>();
    Enumeration params = request.getParameterNames();

    while (params.hasMoreElements()) {
      String name = (String) params.nextElement();
      String value = request.getParameter(name);
      map.put(name, value);
      
      logger.info(name + ":"+ value);
    }
    return map;
  }
  
  public static String getParameterString(HttpServletRequest request,String key) {
    String parametro = request.getParameter(key);
	String resultado = (parametro==null || (parametro).trim().equals(""))?null:
						parametro.trim().toUpperCase();
	return resultado;
  }

  public static String getParameterStringSimple(HttpServletRequest request,String key) {
    String parametro = request.getParameter(key);
	String resultado = (parametro==null || (parametro).trim().equals(""))?null:
						parametro.trim();
	return resultado;
  }
  
  public static Long getParameterLong(HttpServletRequest request,String key) {
    String parametro = request.getParameter(key);
	Long resultado = (parametro==null || (parametro).trim().equals(""))?null:
				      new Double(parametro.trim()).longValue();
	return resultado;
  }
  
  public static Double getParameterDouble(HttpServletRequest request, String key) {
    String parametro = request.getParameter(key);
    parametro = (parametro==null)?null:((parametro.trim().equals("."))?"0":parametro);
	Double resultado = (parametro==null || (parametro).trim().equals(""))?null:new Double(parametro.trim().replaceAll(",", ""));
	return resultado;
  }
  
  public static Date getParameterDate(HttpServletRequest request,String key) {
	String fecha = request.getParameter(key);
	Date dFecha = null;
	
	if (fecha != null && fecha.length() == 10){
		
	    try{
			long lTime = new SimpleDateFormat("dd/MM/yyyy").parse(fecha).getTime();
			dFecha = new Date(lTime);
		}catch(Exception e){
		        return null;
		}
	}
		return dFecha;
  }
}